﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using Domain; // подключение Domain
using Session; // подключение Session
using MainAdmin; // подключение MainAdmin
using Setting; // Подключение файла настроек


namespace ZeuS
{
    public partial class FormSignIn : Form
    {
        BrokerPersonal b_pers = new BrokerPersonal(); // объявление BrokerPersonal
        FormRcPass f_pass = new FormRcPass();
        Props prop = new Props();

        public FormSignIn()
        { 
            InitializeComponent();
            
        }

        private void writeSetting()
        {
            prop.Fields.Login = SgIn_tE_Log.Text;
            prop.WriteXml();
        }
        private void readSetting()
        {
            prop.ReadXml();
            SgIn_tE_Log.Text = Convert.ToString(prop.Fields.Login);

        }

        private void SgIn_sBt_Ent_Click(object sender, EventArgs e) // реализация входа в прорамму
        {
            try
            {
                Dm_Pers p = new Dm_Pers(); // объявление Personal
                p.Login = SgIn_tE_Log.Text; // присвоение p.Login текста из SgIn_tE_Log
                p.Pass = SgIn_tE_Pass.Text; // присвоение p.Pass текста из SgIn_tE_Pass              


                if (b_pers.SignIn(p) == true)
                {
                    b_pers.CkPers(p);

                    if (Dm_User.Id_dep == 1)
                    {
                        FormSaleDep f_SlDp = new FormSaleDep();
                        f_SlDp.Show();
                        this.Hide();
                    }

                    if (Dm_User.Id_dep == 2)
                    {
                        FormLogDep f_LgDp = new FormLogDep();
                        f_LgDp.Show();
                        this.Hide();
                    }

                    if (Dm_User.Id_dep == 3)
                    {
                        FormMainAdmin f_MnAd = new FormMainAdmin(); // объявление FormMainAdmin
                        f_MnAd.Show(); // отобрадение FormMainAdmin
                        this.Hide(); // скрыте формы FormSignIn
                    }                 

                    b_pers.OnWork(p); // вызов функции установки флага о том, что пользователь зашел в сеть

                    writeSetting();                

                }
                else
                {
                    MessageBox.Show("Неверно введен логин или пароль"); // сообщение о неправильном вводе логина или пароля
                }
            }
            
            catch (Exception)
            {
                MessageBox.Show("Невозможно подключиться к Базе Данных попробуйте позже.");//сообщение об ошибке
                Close();
            }
        }

        private void SgIn_sBt_Ex_Click(object sender, EventArgs e) // закрытие формы и программы
        {
            Close();
        }

        private void SgIn_lbC_RcPass_MouseEnter(object sender, EventArgs e) // при навидении смена цвета на белый
        {
            SgIn_lbC_RcPass.ForeColor = System.Drawing.SystemColors.Control; 
        }

        private void SgIn_lbC_RcPass_MouseLeave(object sender, EventArgs e) // при "увидении" смена цвета на серый
        {
            SgIn_lbC_RcPass.ForeColor = System.Drawing.SystemColors.ControlDarkDark;
        }

        private void SgIn_lbC_RcPass_Click(object sender, EventArgs e) // тут должен быть код для восстановления пароля
        {
            f_pass.ShowDialog();

        }

        private void FormSignIn_FormClosing(object sender, FormClosingEventArgs e) // когда программа закрывается флаг о входе снимается
        {
            Dm_Pers p = new Dm_Pers(); // объявление Personal
            p.Login = SgIn_tE_Log.Text; // присвоение p.Login текста из SgIn_tE_Log
            b_pers.OffWork(p); // вызов функции установки флага о том, что пользователь вышел из сети
        }

        private void FormSignIn_Load(object sender, EventArgs e)
        {
            readSetting();
        }

        private void SgIn_sBt_ConDB_Click(object sender, EventArgs e) //кнопка смены БД
        {
            FormOptions f_op = new FormOptions();
            f_op.ShowDialog();
        }
    }
}
